#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>
//双向链表的定义
typedef int LTDataType;
typedef struct ListNode
{
    LTDataType data;
    struct ListNode* next;
    struct ListNode* prev;
}LTNode;
//打印链表
void LTPrint(LTNode* phead);
//初始化
void LTInit(LTNode** pphead);
//判断节点是否为空
bool LTEmpty(LTNode* phead);
//尾插
void LTPushBack(LTNode* phead,LTDataType x);
//头插
void LTPushFront(LTNode* phead,LTDataType x);
//尾删
void LTPopBack(LTNode* phead);
//头删
void LTPopFront(LTNode* phead);
//查找
LTNode* LTFind(LTNode* phead,LTDataType x);
//在 pos 之后插入节点
void LTInsert(LTNode* pos,LTDataType x);
//删除指定位置 pos 的节点
void LTErase(LTNode* pos);
//销毁双链表
void LTDestroy(LTNode** pphead);
//优化初始化函数接口
LTNode* LTInit2(void);
//优化销毁链表函数接口
void LTDestroy2(LTNode* phead);
